import { cunninghamConfig as tokens } from '@gouvfr-lasuite/ui-kit';
import { defaultTokens } from '@openfun/cunningham-react';
import merge from 'lodash/merge';

// Uikit does not provide the full list of tokens.
// To be able to override correctly, we need to merge with the default tokens.
let mergedColors = merge(
  defaultTokens.globals.colors,
  tokens.themes.default.globals.colors,
);

mergedColors = {
  ...mergedColors,
  'logo-1': '#2845C1',
};

tokens.themes.default.globals = {
  ...tokens.themes.default.globals,
  ...{
    colors: mergedColors,
    font: {
      ...tokens.themes.default.globals.font,
      families: {
        base: 'sans-serif',
        accent: 'sans-serif',
      },
    },
  },
};

tokens.themes.default.components = {
  ...tokens.themes.default.components,
  ...{
    logo: {
      src: '',
      alt: '',
      widthHeader: '',
      widthFooter: '',
    },
    'la-gaufre': false,
    'home-proconnect': false,
    icon: {
      src: '/assets/icon-docs.svg',
      width: '32px',
      height: 'auto',
    },
    favicon: {
      'png-light': '/assets/favicon-light.png',
      'png-dark': '/assets/favicon-dark.png',
    },
  },
};

const dsfrTheme = {
  dsfr: {
    globals: {
      font: {
        families: {
          base: 'Marianne, Inter, Roboto Flex Variable, sans-serif',
          accent: 'Marianne, Inter, Roboto Flex Variable, sans-serif',
        },
      },
    },
    components: {
      logo: {
        src: '/assets/logo-gouv.svg',
        widthHeader: '110px',
        widthFooter: '220px',
        alt: 'Gouvernement Logo',
      },
      'la-gaufre': true,
      'home-proconnect': true,
      icon: {
        src: '/assets/icon-docs-dsfr.svg',
        width: '32px',
        height: 'auto',
      },
      favicon: {
        ico: '/assets/favicon-dsfr.ico',
        'png-light': '/assets/favicon-dsfr.png',
        'png-dark': '/assets/favicon-dark-dsfr.png',
      },
    },
  },
};

const genericTheme = {
  generic: {
    globals: {
      colors: {
        'brand-050': '#EEF1FA',
        'brand-100': '#DDE2F5',
        'brand-150': '#CED3F1',
        'brand-200': '#BEC5F0',
        'brand-250': '#AFB5F1',
        'brand-300': '#A0A5F6',
        'brand-350': '#8F94FD',
        'brand-400': '#8184FC',
        'brand-450': '#7576EE',
        'brand-500': '#6969DF',
        'brand-550': '#5E5CD0',
        'brand-600': '#534FC2',
        'brand-650': '#4844AD',
        'brand-700': '#3E3B98',
        'brand-750': '#36347D',
        'brand-800': '#2D2F5F',
        'brand-850': '#262848',
        'brand-900': '#1C1E32',
        'brand-950': '#11131F',
        'gray-000': '#FFFFFF',
        'gray-025': '#F8F8F9',
        'gray-050': '#F0F0F3',
        'gray-100': '#E2E2EA',
        'gray-150': '#D3D4E0',
        'gray-200': '#C5C6D5',
        'gray-250': '#B7B7CB',
        'gray-300': '#A9A9BF',
        'gray-350': '#9C9CB2',
        'gray-400': '#8F8FA4',
        'gray-450': '#828297',
        'gray-500': '#75758A',
        'gray-550': '#69697D',
        'gray-600': '#5D5D70',
        'gray-650': '#515164',
        'gray-700': '#454558',
        'gray-750': '#3A3A4C',
        'gray-800': '#2F303D',
        'gray-850': '#25252F',
        'gray-900': '#1B1B23',
        'gray-950': '#111114',
        'gray-1000': '#000000',
        'info-050': '#EAF2F9',
        'info-100': '#D5E4F3',
        'info-150': '#BFD7F0',
        'info-200': '#A7CAEE',
        'info-250': '#8DBDEF',
        'info-300': '#6EB0F2',
        'info-350': '#50A2F5',
        'info-400': '#3593F4',
        'info-450': '#1185ED',
        'info-500': '#0077DE',
        'info-550': '#0069CF',
        'info-600': '#005BC0',
        'info-650': '#0D4EAA',
        'info-700': '#124394',
        'info-750': '#163878',
        'info-800': '#192F5A',
        'info-850': '#192541',
        'info-900': '#141B2D',
        'info-950': '#0C111C',
        'success-050': '#E8F1EA',
        'success-100': '#CFE4D4',
        'success-150': '#BAD9C1',
        'success-200': '#A2CFAD',
        'success-250': '#86C597',
        'success-300': '#6CBA83',
        'success-350': '#4FB070',
        'success-400': '#40A363',
        'success-450': '#309556',
        'success-500': '#1E884A',
        'success-550': '#027B3E',
        'success-600': '#016D31',
        'success-650': '#006024',
        'success-700': '#005317',
        'success-750': '#0D4511',
        'success-800': '#11380E',
        'success-850': '#132A11',
        'success-900': '#101E0F',
        'success-950': '#091209',
        'warning-050': '#F8F0E9',
        'warning-100': '#F1E0D3',
        'warning-150': '#ECD0BC',
        'warning-200': '#E8C0A4',
        'warning-250': '#E8AE8A',
        'warning-300': '#EB9970',
        'warning-350': '#E98456',
        'warning-400': '#E57036',
        'warning-450': '#DA5E18',
        'warning-500': '#CB5000',
        'warning-550': '#BC4200',
        'warning-600': '#AD3300',
        'warning-650': '#9E2300',
        'warning-700': '#882011',
        'warning-750': '#731E16',
        'warning-800': '#58201A',
        'warning-850': '#401D18',
        'warning-900': '#2E1714',
        'warning-950': '#1D0F0D',
        'error-050': '#F9EFEC',
        'error-100': '#F4DFD9',
        'error-150': '#F0CEC6',
        'error-200': '#EEBCB2',
        'error-250': '#EEA99D',
        'error-300': '#EF9486',
        'error-350': '#F37C6E',
        'error-400': '#F65F53',
        'error-450': '#F0463D',
        'error-500': '#E82322',
        'error-550': '#D7010E',
        'error-600': '#C00100',
        'error-650': '#AA0000',
        'error-700': '#910C06',
        'error-750': '#731E16',
        'error-800': '#58201A',
        'error-850': '#401D18',
        'error-900': '#2E1714',
        'error-950': '#1D0F0D',
        'red-050': '#FAEFEE',
        'red-100': '#F4DEDD',
        'red-150': '#F1CDCB',
        'red-200': '#EFBBBA',
        'red-250': '#EEA8A8',
        'red-300': '#F09394',
        'red-350': '#F37B7E',
        'red-400': '#EF6569',
        'red-450': '#E94A55',
        'red-500': '#DA3B49',
        'red-550': '#CA2A3C',
        'red-600': '#BB1330',
        'red-650': '#A90021',
        'red-700': '#910A13',
        'red-750': '#731E16',
        'red-800': '#58201A',
        'red-850': '#411D18',
        'red-900': '#2E1714',
        'red-950': '#1D0F0D',
        'orange-050': '#F8F0E9',
        'orange-100': '#F1E0D3',
        'orange-150': '#ECD0BD',
        'orange-200': '#EABFA6',
        'orange-250': '#EBAC90',
        'orange-300': '#EC9772',
        'orange-350': '#E5845A',
        'orange-400': '#D6774D',
        'orange-450': '#C86A40',
        'orange-500': '#B95D33',
        'orange-550': '#AB5025',
        'orange-600': '#9D4315',
        'orange-650': '#8F3600',
        'orange-700': '#812900',
        'orange-750': '#6C2511',
        'orange-800': '#572017',
        'orange-850': '#401D18',
        'orange-900': '#2E1714',
        'orange-950': '#1D0F0D',
        'brown-050': '#F6F0E8',
        'brown-100': '#F1E0D3',
        'brown-150': '#EBD0BA',
        'brown-200': '#E2C0A6',
        'brown-250': '#D4B398',
        'brown-300': '#C6A58B',
        'brown-350': '#B8987E',
        'brown-400': '#AA8B71',
        'brown-450': '#9D7E65',
        'brown-500': '#8F7158',
        'brown-550': '#82654C',
        'brown-600': '#765841',
        'brown-650': '#694C35',
        'brown-700': '#5D412A',
        'brown-750': '#51361E',
        'brown-800': '#452A13',
        'brown-850': '#392008',
        'brown-900': '#29180A',
        'brown-950': '#1B0F08',
        'yellow-050': '#F3F0E7',
        'yellow-100': '#E9E2CF',
        'yellow-150': '#E1D4B7',
        'yellow-200': '#D9C599',
        'yellow-250': '#D2B677',
        'yellow-300': '#CAA756',
        'yellow-350': '#C2972E',
        'yellow-400': '#B98900',
        'yellow-450': '#AB7B00',
        'yellow-500': '#9D6E00',
        'yellow-550': '#916100',
        'yellow-600': '#855400',
        'yellow-650': '#784700',
        'yellow-700': '#6C3A00',
        'yellow-750': '#5F2E00',
        'yellow-800': '#512302',
        'yellow-850': '#3E1D10',
        'yellow-900': '#2D1711',
        'yellow-950': '#1D0F0D',
        'green-050': '#E6F1E9',
        'green-100': '#CFE4D5',
        'green-150': '#B8D8C1',
        'green-200': '#A0CFAE',
        'green-250': '#84C59A',
        'green-300': '#65BA86',
        'green-350': '#45B173',
        'green-400': '#23A562',
        'green-450': '#029755',
        'green-500': '#008948',
        'green-550': '#017B3B',
        'green-600': '#006E2E',
        'green-650': '#006022',
        'green-700': '#005314',
        'green-750': '#0D4510',
        'green-800': '#11380E',
        'green-850': '#132A11',
        'green-900': '#101E0F',
        'green-950': '#091209',
        'blue1-050': '#EBF1F9',
        'blue1-100': '#D6E4F4',
        'blue1-150': '#C1D7F0',
        'blue1-200': '#AACAEF',
        'blue1-250': '#8FBCEF',
        'blue1-300': '#7CAFEB',
        'blue1-350': '#68A1E4',
        'blue1-400': '#5B94D6',
        'blue1-450': '#4E86C7',
        'blue1-500': '#4279B9',
        'blue1-550': '#356CAC',
        'blue1-600': '#28609E',
        'blue1-650': '#1B5390',
        'blue1-700': '#0B4783',
        'blue1-750': '#0F3C6E',
        'blue1-800': '#133059',
        'blue1-850': '#152641',
        'blue1-900': '#121C2D',
        'blue1-950': '#0B111C',
        'blue2-050': '#E7F3F4',
        'blue2-100': '#CEE7E9',
        'blue2-150': '#B2DCE0',
        'blue2-200': '#91D1D7',
        'blue2-250': '#68C7D0',
        'blue2-300': '#43BBC5',
        'blue2-350': '#00AFBA',
        'blue2-400': '#01A0AA',
        'blue2-450': '#00929D',
        'blue2-500': '#00848F',
        'blue2-550': '#007682',
        'blue2-600': '#016874',
        'blue2-650': '#005B67',
        'blue2-700': '#004E5A',
        'blue2-750': '#00424E',
        'blue2-800': '#003642',
        'blue2-850': '#002A38',
        'blue2-900': '#061E28',
        'blue2-950': '#071219',
        'purple-050': '#F7F0F6',
        'purple-100': '#EEE0EE',
        'purple-150': '#E7D1E7',
        'purple-200': '#DBBFE4',
        'purple-250': '#D3AEE2',
        'purple-300': '#CB99E1',
        'purple-350': '#C188D9',
        'purple-400': '#B47BCB',
        'purple-450': '#A66EBD',
        'purple-500': '#9961AF',
        'purple-550': '#8B55A1',
        'purple-600': '#7E4894',
        'purple-650': '#723C87',
        'purple-700': '#633376',
        'purple-750': '#552A65',
        'purple-800': '#452551',
        'purple-850': '#35213D',
        'purple-900': '#261A2C',
        'purple-950': '#17111C',
        'pink-050': '#F8EFF4',
        'pink-100': '#F0DFEA',
        'pink-150': '#EACEDF',
        'pink-200': '#E9BBD1',
        'pink-250': '#E9A7C2',
        'pink-300': '#E095B4',
        'pink-350': '#D685A8',
        'pink-400': '#C7799B',
        'pink-450': '#B86C8D',
        'pink-500': '#AA5F80',
        'pink-550': '#9C5374',
        'pink-600': '#8E4767',
        'pink-650': '#813B5B',
        'pink-700': '#732E4F',
        'pink-750': '#632643',
        'pink-800': '#521F38',
        'pink-850': '#3E1C2B',
        'pink-900': '#2D171F',
        'pink-950': '#1C0E12',
      },
      font: {
        families: {
          base: 'Inter, Roboto Flex Variable, sans-serif',
          accent: 'Inter, Roboto Flex Variable, sans-serif',
        },
      },
    },
  },
};

const docsTokens = {
  ...tokens,
  themes: {
    ...tokens.themes,
    ...dsfrTheme,
    ...genericTheme,
  },
};

export default docsTokens;
